package com.ruoyi.system.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 预约信息对象 sys_appointment
 * 
 * @author ruoyi
 * @date 2025-06-09
 */
public class SysAppointment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 预约ID */
    private Long appointmentId;

    /** 患者用户ID (关联sys_user表的user_id) */
    @Excel(name = "患者用户ID (关联sys_user表的user_id)")
    private Long userId;

    /** 关联的号源ID (关联sys_appointment_slot表的slot_id) */
    @Excel(name = "关联的号源ID (关联sys_appointment_slot表的slot_id)")
    private Long slotId;

    /** 预约医院ID (关联hospital表的id) */
    @Excel(name = "预约医院ID (关联hospital表的id)")
    private Long hospitalId;

    /** 预约科室ID (关联department表的id) */
    @Excel(name = "预约科室ID (关联department表的id)")
    private Long departmentId;

    /** 预约医生ID (关联doctor表的id，可选) */
    @Excel(name = "预约医生ID (关联doctor表的id，可选)")
    private Long doctorId;

    /** 预约日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预约日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date appointmentDate;

    /** 预约时间段 (例如: 09:00-09:30) */
    @Excel(name = "预约时间段 (例如: 09:00-09:30)")
    private String appointmentTimeSlot;

    /** 预约状态 (例如: 待确认, 已确认, 已完成, 已取消, 已过期) */
    @Excel(name = "预约状态 (例如: 待确认, 已确认, 已完成, 已取消, 已过期)")
    private String status;

    /** 就诊原因 */
    @Excel(name = "就诊原因")
    private String reasonForVisit;

    /** 联系人姓名 (如代约) */
    @Excel(name = "联系人姓名 (如代约)")
    private String contactPersonName;

    /** 联系人电话 (如代约) */
    @Excel(name = "联系人电话 (如代约)")
    private String contactPersonPhone;

    public void setAppointmentId(Long appointmentId) 
    {
        this.appointmentId = appointmentId;
    }

    public Long getAppointmentId() 
    {
        return appointmentId;
    }
    public void setUserId(Long userId) 
    {
        this.userId = userId;
    }

    public Long getUserId() 
    {
        return userId;
    }
    public void setSlotId(Long slotId) 
    {
        this.slotId = slotId;
    }

    public Long getSlotId() 
    {
        return slotId;
    }
    public void setHospitalId(Long hospitalId) 
    {
        this.hospitalId = hospitalId;
    }

    public Long getHospitalId() 
    {
        return hospitalId;
    }
    public void setDepartmentId(Long departmentId) 
    {
        this.departmentId = departmentId;
    }

    public Long getDepartmentId() 
    {
        return departmentId;
    }
    public void setDoctorId(Long doctorId) 
    {
        this.doctorId = doctorId;
    }

    public Long getDoctorId() 
    {
        return doctorId;
    }
    public void setAppointmentDate(Date appointmentDate) 
    {
        this.appointmentDate = appointmentDate;
    }

    public Date getAppointmentDate() 
    {
        return appointmentDate;
    }
    public void setAppointmentTimeSlot(String appointmentTimeSlot) 
    {
        this.appointmentTimeSlot = appointmentTimeSlot;
    }

    public String getAppointmentTimeSlot() 
    {
        return appointmentTimeSlot;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }
    public void setReasonForVisit(String reasonForVisit) 
    {
        this.reasonForVisit = reasonForVisit;
    }

    public String getReasonForVisit() 
    {
        return reasonForVisit;
    }
    public void setContactPersonName(String contactPersonName) 
    {
        this.contactPersonName = contactPersonName;
    }

    public String getContactPersonName() 
    {
        return contactPersonName;
    }
    public void setContactPersonPhone(String contactPersonPhone) 
    {
        this.contactPersonPhone = contactPersonPhone;
    }

    public String getContactPersonPhone() 
    {
        return contactPersonPhone;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("appointmentId", getAppointmentId())
            .append("userId", getUserId())
            .append("slotId", getSlotId())
            .append("hospitalId", getHospitalId())
            .append("departmentId", getDepartmentId())
            .append("doctorId", getDoctorId())
            .append("appointmentDate", getAppointmentDate())
            .append("appointmentTimeSlot", getAppointmentTimeSlot())
            .append("status", getStatus())
            .append("reasonForVisit", getReasonForVisit())
            .append("contactPersonName", getContactPersonName())
            .append("contactPersonPhone", getContactPersonPhone())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
